package Persistencia;

import Classes.Ciudad;
import java.util.HashMap;
import java.util.Map;

/**
 *
 * @author mj
 */
public class CiudadesMapper {

    private static CiudadesMapper instance;
    private Map<Integer, Ciudad> cache;

    private CiudadesMapper() {
        cache = new HashMap<Integer, Ciudad>();
    }

    public static CiudadesMapper getInstance() {
        if (instance == null) {
            instance = new CiudadesMapper();
        }
        return instance;
    }

    public Ciudad getCiudad(int codigoPostal) {
        Ciudad ciudad = null;

        if (cache.containsKey(codigoPostal)) {
            return cache.get(codigoPostal);
        } else {
            try {
                java.sql.PreparedStatement ps = DBManager.getInstance().getNuevaConexion().prepareStatement(
                        "select * from localidades where cp = ?");
                ps.setInt(1, codigoPostal);
                java.sql.ResultSet rs = ps.executeQuery();
                if (rs.next()) {
                    ciudad = new Ciudad(codigoPostal);

                    ciudad.setCodigoArea(rs.getInt("prefijo_ddn"));

                    ciudad.setLocalidad(rs.getString("localidad"));
                    ciudad.setLocalidad(ciudad.getLocalidad().trim()); // esta magia es para que no haya excepcion

                    ciudad.setProvincia(rs.getString("provincia"));
                    ciudad.setProvincia(ciudad.getProvincia().trim());

                    cache.put(codigoPostal, ciudad);
                }
                rs.close();

                return ciudad;
            } catch (Exception e) {
                return null;
            }
        }
    }
}
